package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootSociatyInfo;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.form.impl.FootSociatyInfoSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootSociatyInfoService extends BaseService<FootSociatyInfo> {
	/**
	 * 根据战队主键查所有会员
	 * @param zdId
	 * @return
	 */
	List<FootSociatyInfo> findSociatyBySociatyId(Long zdId);

	/**
	 * 根据用户主键查单条对应关系信息
	 * @param userId
	 * @return
	 */
	FootSociatyInfo findFootSociatyInfoByUserid(Long userId, HttpServletRequest request);

	/**
	 * 根据用户主键删除公会信息（退出公会）
	 * @param userId
	 * @return
	 */
	boolean exitSociaty(Long userId, HttpServletRequest request);

    /**
     * 翻页方法
     * @param footSociatyInfoSearchForm 条件
     * @return 列表
     */
    List<FootSociatyInfo> findall(FootSociatyInfoSearchForm footSociatyInfoSearchForm);

    /**
     * 查询
     * @param entityname 实体类名
     * @param map 参数
     * @param footSociatyInfoSearchForm 条件
     */
    void search(String entityname, Model map, FootSociatyInfoSearchForm footSociatyInfoSearchForm);

    /**
     * 删除所有
     * @param footSociatyInfoSearchForm 条件
     * @param request 请求
     */
    void deleteAll(FootSociatyInfoSearchForm footSociatyInfoSearchForm, HttpServletRequest request);

    /**
     * 根据用户主键获取战队信息
     * @param id 用户主键
     * @return 战队信息
     */
    FootSociatyInfo getSociatyByUserId(Long id);

    /**
     * 根据战队主键和状态查询人员记录
     * @param zdId 战队主键
     * @param isAgree 状态
     * @return 人员记录列表
     */
    List<FootSociatyInfo> findSociatyBySociatyIdAndAgree(Long zdId, Boolean isAgree);

    /**
     * 初始化战队关联信息记录
     * @param u 用户实体类
     * @param request 请求
     */
    void saveNewSociaty(FootUser u, HttpServletRequest request);

    /**
     * 同意加入战队
     * @param id 主键
     * @param agree 是否同意
     * @param request 请求
     */
    void agree(Long id, Boolean agree, HttpServletRequest request);

    /**
     * 删除用户时删除相关信息
     * @param id 用户主键
     * @param request 请求
     */
    void deleteByUserid(Long id, HttpServletRequest request);
}